package com.haidao.admin.component.service;

import com.haidao.admin.component.entity.Task;
import com.haidao.admin.component.params.TaskParam;
import com.haidao.admin.component.params.TaskUpdateParam;
import org.quartz.*;
import org.springframework.data.domain.Page;

import java.util.List;
import java.util.Map;

public interface TaskService {

    /**
     * 任务列表
     *
     * @param param
     * @return
     */
    Page<Task> list(TaskParam param);

    /**
     * 获取全部任务
     * @return
     */
    List<Task> getAll();


    /**
     * 添加任务
     *
     * @param task
     */
    void create(Task task);

    /**
     * 修改任务
     *
     * @param task
     */
    void update(Task task);

    void batchUpdate(TaskUpdateParam task);

    /**
     * 任务详情
     * @param taskId
     * @return
     */
    Task detail(Long taskId);

    /**
     * 创建任务
     *
     * @param jobName
     * @param cronExpression
     * @param params
     * @param jobClass
     */
    void addJob(String jobName, String cronExpression, Map<String,Object> params, Class<? extends Job> jobClass);


    /**
     * 删除任务
     *
     * @param jobName
     */
    public void removeJob(String jobName);

    /**
     * 立即启动任务
     *
     * @param jobName
     * @param params
     * @param jobClass
     */
    public void startNow(String jobName,Map<String, Object> params, Class<? extends Job> jobClass) throws Exception;

}